
#include "Parser.h"

using namespace std;

class InputLine
{
public:
	//*************************************************************************
	//Constructor from Parser object
	//*************************************************************************
	InputLine(const Parser& prs);

	//*************************************************************************
	//copy CTOR
	//*************************************************************************
	InputLine(const InputLine& inp);

	//*************************************************************************
	//assignment operator
	//*************************************************************************
	const InputLine& operator=(const InputLine& inp);


	//*************************************************************************
	//divide file lines into tokens and put them into vector container
	//*************************************************************************
	virtual void tokenizeFile();

	//*************************************************************************
	// Print out tokens of whole file
	//*************************************************************************
	void printOutFileTokens() const;

	//*************************************************************************
	//get reference to container of file tokens
	//*************************************************************************
	const vector<vector<string>>& getFileTokens() const;

	//*************************************************************************
	//get number of tokens in line
	//*************************************************************************
	int getNumOfTokensInLine(int line) const;

	//*****************************************************************************
	// Get number of tokens in file
	//*****************************************************************************
	int getNumOfTokensInFile() const;

	//*************************************************************************
	// DTOR
	//*************************************************************************
	~InputLine(void);

protected:
	//*************************************************************************
	//divide line into tokens and put them into vector container
	//*************************************************************************
	virtual const vector<string> tokenizeLine(const string& str);

private:
	static const string DELIMITERS;    //delimiters for dividing string
									   //into tokens

	vector<vector<string>> fileTokens; //container that stores tokens

	 Parser parser;                     //parser class with file divided
	                                   //to lines
};
